<?php
class BaseMemcache{
  private
  $memcache = null;

  /**
   *构造函数 创建Memcache,分布式memcache用addServer形式加入多台memcache服务器
   */
  function __construct($servers)
  {
      $this->memcache = new Memcache;
      //$this->memcache->connect($ip,$port);
      foreach($servers as $key=>$val){
          $this->memcache->addServer($val[0],$val[1]);
      }

      #获取memcache服务器的状态
      //$memcacheState = $this->memcache->getExtendedStats();
  }

  /**
   *设置存储值,memcache存储是以键值对形式存放,和cookie的存储形式很像
   * @param $key 键
   * @param $value 对应的值
   * @param $compressed 是否压缩,0表示不压缩,1和2表示压缩,但是使用1的值在检索值时产生序列化错误,建议要压缩的话使用2
   * @param $time 压缩时间,以秒计算
   */
  function setVal($key, $val, $compressed = 0, $time)
  {
      $this->memcache->set($key, $val, $compressed, $time);
  }

  /**
   *修改存储值,memcache存储是以键值对形式存放,和cookie的存储形式很像
   * @param $key 键
   * @param $value 对应的值
   * @param $compressed 是否压缩,0表示不压缩,1和2表示压缩,但是使用1的值在检索值时产生序列化错误,建议要压缩的话使用2
   * @param $time 压缩时间,以秒计算
   */
  function replaceVal($key, $val, $compressed = 0, $time)
  {
      $this->memcache->replace($key, $val, $compressed, $time);
  }

  /**
   *根据键值获取memcache缓存数据
   * @param $key 获取的键值
   */
  function getVal($key)
  {
      return $this->memcache->get($key);
  }

  /**
   *根据键删除memcache缓存数据
   * @param $key 需要操作的键
   */
  function deleteVal($key)
  {
      $this->memcache->delete($key);
  }

  /**
   *清除memcache所有数据
   */
  function flushData()
  {
      $this->memcache->flush();
  }

  /**
   *关闭memcache缓存
   */
  function closeMemcache()
  {
      $this->memcache->close();
  }
}
 ?>
